#!/bin/bash

# blog-admin 日志查看脚本

CONTAINER_NAME="blog-admin"
LOG_DIR="/var/jenkins_home/logs"

# 颜色输出
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}blog-admin 日志查看工具${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo "使用方法:"
echo "  1. 实时查看日志: $0 -f"
echo "  2. 查看最近 N 行: $0 -n 100"
echo "  3. 查看最近时间: $0 -s 10m"
echo "  4. 保存日志到文件: $0 -o"
echo ""

# 检测 Docker 命令
DOCKER_CMD="docker"
if ! docker ps >/dev/null 2>&1; then
    if sudo docker ps >/dev/null 2>&1; then
        DOCKER_CMD="sudo docker"
    else
        echo "错误: 无法访问 Docker"
        exit 1
    fi
fi

# 检查容器是否存在
if ! $DOCKER_CMD ps -a --format "{{.Names}}" | grep -q "^${CONTAINER_NAME}$"; then
    echo "错误: 容器 $CONTAINER_NAME 不存在"
    exit 1
fi

# 检查容器是否运行
if ! $DOCKER_CMD ps --format "{{.Names}}" | grep -q "^${CONTAINER_NAME}$"; then
    echo -e "${YELLOW}警告: 容器 $CONTAINER_NAME 未运行${NC}"
    echo "显示停止状态的容器日志..."
fi

# 解析参数
case "$1" in
    -f|--follow)
        echo -e "${GREEN}实时查看日志（按 Ctrl+C 退出）...${NC}"
        $DOCKER_CMD logs -f $CONTAINER_NAME
        ;;
    -n|--tail)
        LINES=${2:-100}
        echo -e "${GREEN}查看最近 $LINES 行日志...${NC}"
        $DOCKER_CMD logs --tail $LINES $CONTAINER_NAME
        ;;
    -s|--since)
        TIME=${2:-10m}
        echo -e "${GREEN}查看最近 $TIME 的日志...${NC}"
        $DOCKER_CMD logs --since $TIME $CONTAINER_NAME
        ;;
    -o|--output)
        LOG_FILE="${LOG_DIR}/blog-admin-$(date +%Y%m%d-%H%M%S).log"
        mkdir -p "$LOG_DIR"
        echo -e "${GREEN}保存日志到文件: $LOG_FILE${NC}"
        $DOCKER_CMD logs $CONTAINER_NAME > "$LOG_FILE" 2>&1
        echo -e "${GREEN}日志已保存到: $LOG_FILE${NC}"
        echo "文件大小: $(du -h "$LOG_FILE" | cut -f1)"
        ;;
    *)
        echo -e "${GREEN}查看最近 50 行日志...${NC}"
        $DOCKER_CMD logs --tail 50 $CONTAINER_NAME
        echo ""
        echo -e "${YELLOW}提示: 使用 -f 参数可以实时查看日志${NC}"
        ;;
esac

